a. Field of the Invention
The present invention pertains generally to controllers of computer data storage systems and more particularly to software-based controllers of computer data storage systems.
b. Description of the Background
Computer systems handling large quantities of data have storage devices that can hold such large quantities of data and allow that data to be quickly retrieved, changed or manipulated. When using a computer system in situations where loss or unavailability of stored data is unacceptable, a computer system may contain host bus adapters to eliminate single-point failures. The host bus adapters in these cases are connected to data storage devices.
A computer system has a finite number of pieces of hardware and a finite number of physical paths between a host computer and a set of storage devices. Previously, computer users have tried to maximize data storage throughput by allowing the physical data paths to be shared among several storage devices, preferably so that each storage device only uses one data path at a time. Computer systems use a device “driver,” or specialized set of software commands, to direct the operations of each device.
Multiple-path (or multipath) drivers have attempted to improve upon these previous techniques. Multipath drivers direct data flow within the data paths of a computer system so that data input and output (or I/O) operations can continue despite the failure or degradation of a data path. If any part of a data path, whether hardware or software, breaks down, data can be re-routed to an alternate path without crippling the entire system, while the primary path is repaired. However, incorporating multiple-path drivers into a computer system without impacting the performance and integrity of the operating system within the computer system is difficult, particularly when the operating system and I/O must remain unaffected.
Attempts have been made to use virtual data paths within a computer system with the aid of a logical volume manager. The imperfect results of these methods have resulted in modifications by designers of such systems of the host operating system source code. However, modifying host operating system source code is undesirable for several reasons. First, host operating system source code modifications may create unforeseen negative effects in other areas of a computer system, even in those areas seemingly unaffected by the modified code. Second, users of some operating systems require that any modifications to their operating system's source code be made available at no additional cost and that any negative effects of modified code be fixed at the expense of the modifier. This reduces the economic benefit to anyone who modifies source code, not only because improvements cannot be sold, but also because time and money may be required to create no-cost “patches” for any problems caused by these improvements.
It would therefore be advantageous to provide a software program that allows a computer system to use more than one data path, increase throughput and minimize the effect of failed data paths. It would also be advantageous if such a software program could be used with various hardware systems regardless of manufacturer. It would further be advantageous if such a software program could be implemented on any computer system without modifying the source code of the operating system within the computer system.